// 封装aixos
import axios from "axios"
import {ElMessage,ElLoading} from 'element-plus'
// 自定义默认实例
const instance = axios.create({
  timeout: 5000,
  baseURL:'http://localhost:5173'
});

let loading = null
// 添加请求拦截器
instance.interceptors.request.use(function (config) {
  // 在发送请求之前
  // 配置请求头
  config.headers["Content-Type"] = 'application/x-www-form-urlencoded'
  if(config.showLoading){
    loading = ElLoading.service({
      lock: true,
      text: '加载中...',
      background: 'rgba(0, 0, 0, 0.7)',
    })
  }
  return config;
}, function (error) {
  // 请求错误
  ElMessage({
    type:'error',
    message:'请求发送失败'
  })
  if(loading){
    loading.close()
    loading = null
  }
  return Promise.reject(error);
});

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
  // 2xx 范围内的状态码都会触发该函数。
  let {showLoading} = response.config
  if(showLoading) loading.close()
  let res = response.data
  // 返回数据，而不是直接返回Promise对象
  return res;
}, function (error) {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  return Promise.reject(error);
});

export default instance
